﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//void test1(int arr[])
//{}
//void test1(int arr[10])
//{}
//void test1(int* arr)
//{}
//void test2(int* arr[])
//{}
//void test2(int* arr[20])
//{}
//void test2(int** arr)
//{}
//
//int main()
//{
//	int arr1[10] = { 0 };
//	int* arr2[20] = { 0 };
//	test1(arr1);
//	test2(arr2);
//
//	return 0;
//}
//

//void test(int arr[3][5])
//{}
//void test(int arr[][5])
//{}
//void test(int arr[][])
//{}
//
//void test(int* arr)
//{}
//void test(int* arr[5])
//{}
//void test(int(*arr)[5])
//{}
//void test(int** arr)
//{}
//
////总结：二维数组传参，函数形参的设计只能省略第一个[]的数字。
////因为对一个二维数组，可以不知道有多少行，但是必须知道一行多少元素。
////这样才方便运算。
//
//int main()
//{
//	int arr[3][5] = { 0 };
//	test(arr);
//}


//void print(int* p, int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9 };
//	int* p = arr;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//一级指针p，传给函数
//	print(p, sz);
//	return 0;
//}

//#include <stdio.h>
//void test(int** ptr)
//{
//	printf("num = %d\n", **ptr);
//}
//
//int main()
//{
//	int n = 10;
//	int* p = &n;
//	int** pp = &p;
//	test(pp);
//	test(&p);
//	return 0;
//}
//
//#include <stdio.h>
//void test()
//{
//	printf("hehe\n");
//}
//
//int main()
//{
//	printf("%p\n", test);
//	printf("%p\n", &test);
//	return 0;
//}

//int Add(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int (*pf)(int, int) = &Add;
//	int ret = pf(2, 3);
//	int ret = (*pf)(2, 3);
//
//	return 0;
//}


//int add(int a, int b)
//{
//	return a + b;
//}
//int sub(int a, int b)
//{
//	return a - b;
//}
//int mul(int a, int b)
//{
//	return a * b;
//}
//int div(int a, int b)
//{
//	return a / b;
//}
//
//int main()
//{
//	int x, y;
//	int input = 1;
//	int ret = 0;
//	int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表
//	while (input)
//	{
//		printf("*************************\n");
//		printf("*  1:add         2:sub  *\n");
//		printf("*  3:mul         4:div  *\n");
//		printf("*************************\n");
//		printf("请选择：");
//		scanf("%d", &input);
//		if ((input <= 4 && input >= 1))
//		{
//			printf("输入操作数：");
//			scanf("%d %d", &x, &y);
//			ret = (*p[input])(x, y);
//		}
//		else
//			printf("输入有误\n");
//		printf("ret = %d\n", ret);
//	}
//	return 0;
//}